package com.supermap.dataservice.cloud.project;

import com.supermap.dubbo.api.cloud.project.*;
import org.apache.ibatis.annotations.*;
import org.apache.logging.log4j.util.Strings;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * @author aqua
 * @description
 * @date 2019年11月05 17:24
 * @email 1301584033@qq.com
 */
@Mapper
public interface ProjectMapper {

    @SelectProvider(type = ProjectMapperSQL.class,method = "getUserParamListSQL")
    List<Map<String,Object>> getUserParamList(@Param("deCode")String deCode,@Param("projectId")Integer projectId);
    @Insert("insert into t_h_econ_yield_county_file(ctime,name,userid) values(#{crop.cdete},#{crop.fileName},#{crop.userid})")
    void insertAreaCropFile(@Param("crop")AreaCrop crop);
    @SelectProvider(type =ProjectMapperSQL.class,method = "getPageAreaCropListCountSQL")
    Map<String,Object> getPageAreaCropListCount(@Param("areaCode") String areaCode, @Param("cropName")String cropName, @Param("yer")Integer yer,  @Param("xiangzheng")String xiangzheng);
    @SelectProvider(type =ProjectMapperSQL.class,method = "getPageAreaCropListSQL")
    List<Map<String,Object>> getPageAreaCropList(@Param("areaCode") String areaCode, @Param("cropName")String cropName, @Param("yer")Integer yer,  @Param("xiangzheng")String xiangzheng,@Param("page") Integer page,@Param("size") Integer size);

    @Select("select * from t_expend_stype")
    List<Map<String,Object>>   getExpendList();
    @SelectProvider(type =ProjectMapperSQL.class,method = "getPageProjectListSQL")
   List<Map<String,Object>> getPageProjectList(@Param("name") String name,@Param("userId")String userId,@Param("page") Integer page,@Param("size") Integer size);
    @SelectProvider(type =ProjectMapperSQL.class,method = "getPageProjectListCount")
    Integer getPageProjectListCount(@Param("name") String name,@Param("userId")String userId);

    @Select("select * from t_project_plan where projectid=#{projectId} and del_flg=0 ")
    List<Map<String,Object>> getPlansList(@Param("projectId")Integer projectId);
    @Select("select t2.name as sname,t1.* from t_project_expend_stype t1\n" +
            "left join t_expend_stype t2\n" +
            "on t1.stypeId=t2.id\n ")
    List<Map<String,Object>> getExpendsList(@Param("projectId")Integer projectId);
    @Insert("insert into t_project(name,cuserid,compere,cdate,edate,content,budprice,ctime) values(#{project.name}" +
            ",#{project.cuserid},#{project.compere},#{project.cdate},#{project.edate},#{project.content},#{project.budprice},#{project.ctime});")
    Integer putProject(@Param("project") Project project);
    @Select("select LAST_INSERT_ID()")
    Integer getId();

    @InsertProvider(type = ProjectMapperSQL.class,method = "putPlansSQL")
    Integer putPlans(@Param("plans")List<ProjectPlan> plans);
    @InsertProvider(type = ProjectMapperSQL.class,method = "putExpendStypesSQL")
    Integer putExpendStypes(@Param("expendStypes")List<ExpendStype> expendStypes);
    @InsertProvider(type = ProjectMapperSQL.class,method = "putProjectUsersSQL")
    Integer putProjectUsers(@Param("users")String users,@Param("projectId")Integer projectId);
    @Update("update t_project set del_flg=1 where id=#{projectId}")
    Integer delProject(@Param("projectId") Integer projectId);
    @Update("update t_project_plan set del_flg=1 where id=#{planId}")
    Integer delProjectPlan(@Param("planId") Integer planId);
    @SelectProvider(type =ProjectMapperSQL.class,method = "getPageProjectSubmitListSQL")
    List<Map<String,Object>> getPageProjectSubmitList(@Param("projectId") Integer projectId,@Param("userId")String userId, @Param("planid") Integer planid,@Param("bDate") String bDate,@Param("eDate")String eDate, @Param("state") String state,@Param("stype")String stype,  @Param("page")Integer page,  @Param("size")Integer size);
    @SelectProvider(type =ProjectMapperSQL.class,method = "getPageProjectSubmitListCount")
    Map<String,Object> getPageProjectSubmitListCount(@Param("projectId") Integer projectId,@Param("userId")String userId, @Param("planid") Integer planid,@Param("bDate") String bDate,@Param("eDate")String eDate, @Param("state") String state,@Param("stype")String stype);

    @SelectProvider(type =ProjectMapperSQL.class,method = "getPageProjectachievementListSQL")
    List<Map<String,Object>> getPageProjectachievementList(@Param("projectId") Integer projectId,@Param("typeid") Integer typeid, @Param("page") Integer page, @Param("size")Integer size);

    @SelectProvider(type =ProjectMapperSQL.class,method = "getPageProjectachievementListCountSQL")
    Integer getPageProjectachievementListCount(@Param("projectId") Integer projectId,@Param("typeid") Integer typeid);

    @Select("select * from t_project_achievement_file where aid=#{aid}")
    List<Map<String,Object>> getAChFIleList(@Param("aid") Integer aid);
    @Insert("insert into t_project_achievement(title,projectId,typeid,ctime,cuser) values(#{achievement.title},#{achievement.projectId},#{achievement.typeid},#{achievement.ctime},#{achievement.cuser})")
    Integer putAchievement(@Param("achievement") Achievement achievement);
    @InsertProvider(type = ProjectMapperSQL.class,method = "putAchievementFilesSQL")
    Integer putAchievementFiles(@Param("files")String files,@Param("fileTitles")String fileTitles,@Param("aid")Integer aid);

    @InsertProvider(type =ProjectMapperSQL.class,method = "postSubmitListSQL")
    void putSubmitList(@Param("list")List<List<Object>> list,@Param("suId")Integer suId);
    @Insert("insert into t_project_submit_file(projectId,planid,cuserId,name,ctime,descrt) values(#{submitFile.projectId}" +
            ",#{submitFile.planid},#{submitFile.cuserId},#{submitFile.fileName},#{submitFile.ctime},#{submitFile.descrt})")
    void postSubmitFile(@Param("submitFile") SubmitFile submitFile);
    @InsertProvider(type =ProjectMapperSQL.class,method = "putAreaCropSQL")
    void putAreaCrop(@Param("list")List<List<Object>> list,@Param("fileId")Integer fileId);
    //@Select("select areacode from cqpamiss.t_s_base_user where id=#{userId}")

    @Select("select areacode from t_area where  areaname like concat('%',#{userId},'%') limit 1")
    String getAreaCode(@Param("userId")String userId);
    class  ProjectMapperSQL{
        public String getUserParamListSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            String deCode=(String)map.get("deCode");
            Integer projectId=(Integer)map.get("projectId");
            stringBuilder.append("select t1.* from (select id,realname from cqpamiss.t_s_base_user where id in\n" +
                    "(select user_id from cqpamiss.t_s_user_org where org_id='"+deCode+"'))t1 left  join t_project t2 on t1.id=t2.cuserid where 1=1 ");
            if(projectId!=null){
                    stringBuilder.append(" and t2.id="+projectId+" ");
            }
            stringBuilder.append(" union select t1.* from (select id,realname from cqpamiss.t_s_base_user where id in\n" +
                    "(select user_id from cqpamiss.t_s_user_org where org_id='"+deCode+"'))t1\n" +
                    "left  join t_project_participant t2\n" +
                    "on t1.id=t2.userid \n" +
                    "where 1=1 ");
            if(projectId!=null){
                stringBuilder.append(" and t2.projectId="+projectId+" ");
            }
            return  stringBuilder.toString();
        }
        public String putAreaCropSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            List<List<Object>> list =(List<List<Object>>)map.get("list");
            Integer fileId =(Integer) map.get("fileId");
            stringBuilder.append(" REPLACE   into t_h_econ_yield_county(fileid,areaCode,V_YEAR,C56001,area,C_COUNTY,C_TOWN,V56180,V56181,V56182) values ");
            list.stream().forEach(str ->{
                stringBuilder.append("("+fileId+",'"+str.get(8)+"',"+str.get(0)+",'"+str.get(1)+"','"+str.get(2)+"','"+str.get(3)+"','"+str.get(4)+"',"+str.get(5)+","+str.get(6)+","+str.get(7)+"),");
            });
            return  stringBuilder.substring(0,stringBuilder.length()-1);
        }
        public String getPageAreaCropListCountSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            String areaCode=(String)map.get("areaCode");
            Integer yer=(Integer)map.get("yer");
            String xiangzheng=(String)map.get("xiangzheng");
            String cropName=(String)map.get("cropName");
            stringBuilder.append("select sum(t1.V56180) as zongcan,sum(t1.V56181) as zongmu,count(1) countNum from t_h_econ_yield_county t1 where 1=1 ");

            if(Strings.isNotBlank(areaCode)){
                stringBuilder.append("  and t1.areaCode like concat('"+areaCode+"','%') ");
            }
            if(yer!=null){
                stringBuilder.append("  and t1.V_YEAR ="+yer+" ");
            }
            if(Strings.isNotBlank(cropName)){
                stringBuilder.append("  and t1.C56001 like concat('%','"+cropName+"','%')  ");
            }
            if(Strings.isNotBlank(xiangzheng)){
                stringBuilder.append("  and t1.C_TOWN like concat('%','"+xiangzheng+"','%')  ");
            }
            return  stringBuilder.toString();
        }
        public String getPageAreaCropListSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            String areaCode=(String)map.get("areaCode");
            Integer yer=(Integer)map.get("yer");
            String xiangzheng=(String)map.get("xiangzheng");
            String cropName=(String)map.get("cropName");
            Integer page =(Integer)map.get("page");
            Integer size =(Integer)map.get("size");
            stringBuilder.append("select * from t_h_econ_yield_county t1 where 1=1 ");

            if(Strings.isNotBlank(areaCode)){
                stringBuilder.append("  and t1.areaCode like concat('"+areaCode+"','%') ");
            }
            if(yer!=null){
                stringBuilder.append("  and t1.V_YEAR ="+yer+" ");
            }
            if(Strings.isNotBlank(cropName)){
                stringBuilder.append("  and t1.C56001 like concat('%','"+cropName+"','%')  ");
            }
            if(Strings.isNotBlank(xiangzheng)){
                stringBuilder.append("  and t1.C_TOWN like concat('%','"+xiangzheng+"','%')  ");
            }
            stringBuilder.append(" order by t1.V_YEAR desc ,t1.areaCode desc ,t1.C56001 desc ,t1.C_COUNTY desc limit "+page+","+size+"");
            return  stringBuilder.toString();
        }
        public String postSubmitListSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            List<List<Object>> list =(List<List<Object>>)map.get("list");
            Integer suId =(Integer) map.get("suId");
            stringBuilder.append(" REPLACE   into t_project_submit(subid,sucode,userName,jbName,content,projectName,guishu,stype,price,numprice,bdate,code,state,bumen) values ");
            list.stream().forEach(str ->{
                stringBuilder.append("("+suId+",'"+str.get(0)+"','"+str.get(1)+"','"+str.get(2)+"','"+str.get(3)+"','"+str.get(4)+"','"+str.get(5)+"','"+str.get(6)+"',"+str.get(7)+","+str.get(8)+",'"+str.get(9)+"','"+str.get(10)+"','"+str.get(11)+"','"+str.get(12)+"'),");
            });
            return  stringBuilder.substring(0,stringBuilder.length()-1);
        }
        public String putAchievementFilesSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            String[] files =((String)map.get("files")).split(",");
            String[] fileTitles=((String)map.get("fileTitles")).split(",");
            Integer aid =(Integer)map.get("aid");
            stringBuilder.append("insert into t_project_achievement_file(aid,fileName,fileTitle) values ");
                for(int i=0;i<files.length;i++){
                    stringBuilder.append("("+aid+",'"+files[i]+"','"+fileTitles[i]+"'),");
                }
            return  stringBuilder.substring(0,stringBuilder.length()-1);
        }
        public String getPageProjectachievementListSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            Integer typeid=(Integer)map.get("typeid");
            Integer projectId=(Integer)map.get("projectId");
            Integer page =(Integer)map.get("page");
            Integer size =(Integer)map.get("size");
            page=(page-1)*size;
            stringBuilder.append("select t1.*, t2.name from t_project_achievement t1 " +
                    "inner join t_project t2\n" +
                            "on t1.projectId=t2.id\n" +
                            "where 1=1  ");

            if(projectId!=null){
                stringBuilder.append("  and t1.projectId="+projectId+" ");
            }
            if(typeid!=null){
                stringBuilder.append("   and t1.typeid="+typeid+" ");
            }
            stringBuilder.append(" order by t1.ctime desc limit "+page+","+size+" ");
            return  stringBuilder.toString();
        }
        public String getPageProjectachievementListCountSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            Integer typeid=(Integer)map.get("typeid");
            Integer projectId=(Integer)map.get("projectId");
            stringBuilder.append("select count(1) from t_project_achievement t1 " +
                    "inner join t_project t2\n" +
                    "on t1.projectId=t2.id\n" +
                    "where 1=1  ");

            if(projectId!=null){
                stringBuilder.append("  and t1.projectId="+projectId+" ");
            }
            if(typeid!=null){
                stringBuilder.append("   and t1.typeid="+typeid+" ");
            }
            return  stringBuilder.toString();
        }
        public String getPageProjectSubmitListSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            String state =(String)map.get("state");
            Integer planid=(Integer)map.get("planid");
            String userId=(String)map.get("userId");
            Integer projectId=(Integer)map.get("projectId");
            String bDate=(String)map.get("bDate");
            String eDate=(String)map.get("eDate");
            String stype=(String)map.get("stype");
            Integer page =(Integer)map.get("page");
            Integer size =(Integer)map.get("size");
            page=(page-1)*size;
            stringBuilder.append("select * from ( ");
            stringBuilder.append("select t1.*,t2.ctime from  t_project_submit t1\n" +
                    "inner join t_project_submit_file t2\n" +
                    "on t1.subid=t2.id and t2.del_flg=0\n" +
                    "inner join t_project t3\n" +
                    "on t2.projectId=t3.id where 1=1 ");
            if(Strings.isNotBlank(state)){
                stringBuilder.append("  and t1.state like concat('%','"+state+"','%') ");
            }
            if(projectId!=null){
                stringBuilder.append("  and t2.projectId="+projectId+" ");
            }
            if(planid!=null){
                stringBuilder.append("   and t2.planid="+planid+" ");
            }
            if(Strings.isNotBlank(bDate)){
                stringBuilder.append("   and t1.bdate>='"+bDate+"' ");
            }
            if(Strings.isNotBlank(eDate)){
                stringBuilder.append("   and t1.bdate<='"+eDate+"' ");
            }
            if(Strings.isNotBlank(userId)){
                stringBuilder.append("  and t3.compere='"+userId+"' ");
            }
            if(Strings.isNotBlank(stype)){
                stringBuilder.append("  and t1.stype like concat('%','"+stype+"','%') ");
            }
            stringBuilder.append(" union select t1.*,t2.ctime from t_project_submit t1\n" +
                    "inner join t_project_submit_file t2\n" +
                    "on t1.subid=t2.id and t2.del_flg=0\n" +
                    "inner join t_project_participant t3\n" +
                    "on  t2.projectId=t3.projectId and t3.userid = t2.cuserId where 1=1 ");

            if(Strings.isNotBlank(state)){
                stringBuilder.append("  and t1.state like concat('%','"+state+"','%') ");
            }
            if(projectId!=null){
                stringBuilder.append("  and t2.projectId="+projectId+" ");
            }
            if(planid!=null){
                stringBuilder.append("   and t2.planid="+planid+" ");
            }
            if(Strings.isNotBlank(bDate)){
                stringBuilder.append("   and t1.bdate>='"+bDate+"' ");
            }
            if(Strings.isNotBlank(eDate)){
                stringBuilder.append("   and t1.bdate<='"+eDate+"' ");
            }
            if(Strings.isNotBlank(stype)){
                stringBuilder.append("  and t1.stype like concat('%','"+stype+"','%') ");
            }
            if(Strings.isNotBlank(userId)){
                stringBuilder.append("  and t3.userid='"+userId+"' ");
            }
            stringBuilder.append(" )tt1");

            stringBuilder.append(" order by tt1.ctime desc limit "+page+","+size+" ");
            return  stringBuilder.toString();
        }
        public String getPageProjectSubmitListCount(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            String state =(String)map.get("state");
            String userId=(String)map.get("userId");
            String bDate=(String)map.get("bDate");
            String eDate=(String)map.get("eDate");
            String stype=(String)map.get("stype");
            Integer planid=(Integer)map.get("planid");
            Integer projectId=(Integer)map.get("projectId");
            stringBuilder.append("select sum(price) as price ,sum(numprice) as numprice ,sum(countNum) as countNum from ( ");
            stringBuilder.append(" select sum(t1.price) as price ,sum(t1.numprice) as numprice ,count(t1.id) as countNum from t_project_submit t1\n" +
                    "inner join t_project_submit_file t2\n" +
                    "on t1.subid=t2.id\n" +
                    "inner join t_project t3\n" +
                    "on t2.projectId=t3.id \n" +
                    "where 1=1  ");
            if(Strings.isNotBlank(state)){
                stringBuilder.append("  and t1.state like concat('%','"+state+"','%') ");
            }
            if(projectId!=null){
                stringBuilder.append("  and t2.projectId="+projectId+" ");
            }
            if(planid!=null){
                stringBuilder.append("   and t2.planid="+planid+" ");
            }
            if(Strings.isNotBlank(bDate)){
                stringBuilder.append("   and t1.bdate>='"+bDate+"' ");
            }
            if(Strings.isNotBlank(stype)){
                stringBuilder.append("  and t1.stype like concat('%','"+stype+"','%') ");
            }
            if(Strings.isNotBlank(eDate)){
                stringBuilder.append("   and t1.bdate<="+eDate+" ");
            }
            if(Strings.isNotBlank(userId)){
                stringBuilder.append("  and  t3.compere='"+userId+"' ");
            }
            stringBuilder.append(" union\n" +
                    "select sum(t1.price) as price ,sum(t1.numprice) as numprice ,count(t1.id) as countNum from t_project_submit t1\n" +
                    "inner join t_project_submit_file t2\n" +
                    "on t1.subid=t2.id\n" +
                    "inner join t_project_participant t3\n" +
                    "on  t2.projectId=t3.projectId and t3.userid = t2.cuserId  ");
            if(Strings.isNotBlank(state)){
                stringBuilder.append("  and t1.state like concat('%','"+state+"','%') ");
            }
            if(projectId!=null){
                stringBuilder.append("  and t2.projectId="+projectId+" ");
            }
            if(planid!=null){
                stringBuilder.append("   and t2.planid="+planid+" ");
            }
            if(Strings.isNotBlank(stype)){
                stringBuilder.append("  and t1.stype like concat('%','"+stype+"','%') ");
            }
            if(Strings.isNotBlank(bDate)){
                stringBuilder.append("   and t1.bdate>='"+bDate+"' ");
            }
            if(Strings.isNotBlank(eDate)){
                stringBuilder.append("   and t1.bdate<="+eDate+" ");
            }
            if(Strings.isNotBlank(userId)){
                stringBuilder.append("  and  t3.userid='"+userId+"' ");
            }

            stringBuilder.append(" )tt1");
            return  stringBuilder.toString();
        }



        public String putProjectUsersSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            String users =(String)map.get("users");
            Integer projectId =(Integer)map.get("projectId");
            stringBuilder.append("insert into t_project_participant(projectId,userid) values ");
            Arrays.stream(users.split(",")).forEach(str ->{
                stringBuilder.append("("+projectId+",'"+str+"'),");
            });
            return  stringBuilder.substring(0,stringBuilder.length()-1);
        }

        public String putExpendStypesSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            List<ExpendStype> expendStypes =(List<ExpendStype>)map.get("expendStypes");
            stringBuilder.append("insert into t_project_expend_stype(projectId,stypeId,money,percent) values ");
            expendStypes.stream().forEach(plan -> {
                stringBuilder.append("("+plan.getProjectId()+","+plan.getStypeId()+","+plan.getMoney()+"" +
                        ",'"+plan.getPercent()+"'),");
            });
            return  stringBuilder.substring(0,stringBuilder.length()-1);
        }

        public String putPlansSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            List<ProjectPlan> plans =(List<ProjectPlan>)map.get("plans");
            stringBuilder.append("insert into t_project_plan(projectid,state,planName,budget,budgetper,stime,etime,ctime) values ");
            plans.stream().forEach(plan -> {
                stringBuilder.append("("+plan.getProjectid()+","+plan.getState()+",'"+plan.getPlanName()+"'" +
                        ","+plan.getBudget()+",'"+plan.getBudgetper()+"','"+plan.getStime()+"','"+plan.getEtime()+"','"+plan.getCtime()+"'),");
            });
            return  stringBuilder.substring(0,stringBuilder.length()-1);
        }
        public String getPageProjectListCount(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            String name =(String)map.get("name");
            String userId =(String)map.get("userId");
            stringBuilder.append("select count(1) from (");
            stringBuilder.append("select t1.id from t_project t1\n" +
                    "inner join  cqpamiss.t_s_base_user t2\n" +
                    "on t1.cuserid=t2.id  and t1.del_flg=0\n" +
                    "where 1=1   ");
            if(Strings.isNotBlank(name)){
                stringBuilder.append("  and t1.name like concat('%','"+name+"','%') ");
            }
            if(Strings.isNotBlank(userId)){
                stringBuilder.append("  and t1.compere='"+userId+"' ");
            }
            stringBuilder.append("union  select t1.id from t_project t1 \n" +
                    "                    inner join  cqpamiss.t_s_base_user t2\n" +
                    "                    on t1.cuserid=t2.id  and t1.del_flg=0\n" +
                    "                    inner join t_project_participant t3\n" +
                    "                    on t3.projectId=t1.id  where 1=1");
            if(Strings.isNotBlank(name)){
                stringBuilder.append("  and t1.name like concat('%','"+name+"','%') ");
            }
            if(Strings.isNotBlank(userId)){
                stringBuilder.append("  and t3.userid='"+userId+"' ");
            }
            stringBuilder.append(" ) tt1");
            return  stringBuilder.toString();
        }
        public String getPageProjectListSQL(Map map){
            StringBuilder stringBuilder=new StringBuilder();
            String name =(String)map.get("name");
            String userId =(String)map.get("userId");
            Integer page =(Integer)map.get("page");
            Integer size =(Integer)map.get("size");
            page=(page-1)*size;
            stringBuilder.append("select * from (");
            stringBuilder.append("select t1.*,t2.realname as userName from t_project t1\n" +
                    "inner join  cqpamiss.t_s_base_user t2\n" +
                    "on t1.cuserid=t2.id  and t1.del_flg=0\n" +
                    "where 1=1   ");
            if(Strings.isNotBlank(name)){
                stringBuilder.append("  and t1.name like concat('%','"+name+"','%') ");
            }
            if(Strings.isNotBlank(userId)){
                stringBuilder.append("  and t1.compere='"+userId+"' ");
            }
            stringBuilder.append("union  select t1.*,t2.realname as userName from t_project t1 \n" +
                    "                    inner join  cqpamiss.t_s_base_user t2\n" +
                    "                    on t1.cuserid=t2.id  and t1.del_flg=0\n" +
                    "                    inner join t_project_participant t3\n" +
                    "                    on t3.projectId=t1.id  where 1=1");
            if(Strings.isNotBlank(name)){
                stringBuilder.append("  and t1.name like concat('%','"+name+"','%') ");
            }
            if(Strings.isNotBlank(userId)){
                stringBuilder.append("  and t3.userid='"+userId+"' ");
            }
            stringBuilder.append(" ) tt1");
            stringBuilder.append(" order by tt1.ctime desc limit "+page+","+size+" ");
            return  stringBuilder.toString();
        }


    }

}
